SPECTRUM開発の”DDS&反転レベルシフトPLL”回路のご紹介
この章では、秋月のDDSキットとPLL回路を組み合わせる応用テクニックをご紹介します。DDSの長所である高分解能な周波数掃引を、1GHz帯までのPLL回路で実現します。(DDS単体では最高周波数は17.5MHz程度が限界)。また、周波数出力はPLL回路のVCO出力となっていますので、高周波領域において波形の歪みが増大するというDDSの欠点は、ほとんどありません。また、さらなるメリットとして、PLLの設定が固定にできるため、DDS回路側の周波数をわずかに可変させることで、PLLのロックを外さないで周波数を微調整できます。周波数の可変速度はDDSの方が格段に速いため、DDSによりPLLの高速掃引も可能にしました。ロータリエンコーダをつけてダイヤル式にした受信機や送信機等の局部発振器に応用すれば、安定でしかも周波数を細かく設定できるVFOにもなります。
入力データのコマンドについて
まずPLL回路と組み合わせる前に、DDSの制御方法について解説します。
DDS−LSIチップは、表1に示すように各動作をコマンドで設定できるようになっています。
コマンド | 動作 |
0 | DDS−LSIの出力をOFFする (注)データ部ビット0〜25にはダミーデータ(0または1)を入れる |
1 | DDS−LSIの出力をONする(リセット直後は出力OFF) (注)データ部ビット0〜25にはダミーデータ(0または1)を入れる |
2 | ------------ 未使用 -------------- |
3 | P1〜P4に4ビットデータを出力(データ部のMSBから4ビット) (注)データ部ビット0〜21にはダミーデータ(0または1)を入れる |
4 | メモリ1CHに26ビットの周波数データを書き込む |
5 | メモリ2CHに26ビットの周波数データを書き込む |
6 | メモリ3CHに26ビットの周波数データを書き込む |
7 | メモリ4CHに26ビットの周波数データを書き込む |
8 | メモリ1CHの周波数データをDDS出力する (注)データ部ビット0〜25にはダミーデータ(0または1)を入れる |
9 | メモリ2CHの周波数データをDDS出力する (注)データ部ビット0〜25にはダミーデータ(0または1)を入れる |
A | メモリ3CHの周波数データをDDS出力する (注)データ部ビット0〜25にはダミーデータ(0または1)を入れる |
B | メモリ4CHの周波数データをDDS出力する (注)データ部ビット0〜25にはダミーデータ(0または1)を入れる |
C | メモリ1CHに26ビットの周波数データを書き込みこれを出力する |
D | メモリ2CHに26ビットの周波数データを書き込みこれを出力する |
E | メモリ3CHに26ビットの周波数データを書き込みこれを出力する |
F | メモリ4CHに26ビットの周波数データを書き込みこれを出力する |
シリアルデータの設定法について
シリアルデータ入力は、DATA端子,SCK端子,STB端子の3入力で設定します。入力データの構成は、アドレスが3ビット、コマンドが4ビット、周波数設定データが26ビットの計33ビット構成です。図1にDDS設定のタイミングチャートを示します。
![]() |
図1.DDS設定のタイミングチャート |
シリアルデータの設定例を図2〜図6に示します。コマンドは0〜Fまでありますが、周波数掃引を目的とする場合には、メモリは1CH〜4CHまで使えますが、そのうちの1CHのコマンドCを使うようにして、26ビットの周波数データを順次増加(または減少)させていきます。
![]() |
図2.コマンド0のデータ設定例 (DDS出力をOFF) |
![]() |
図3.コマンド3のデータ設定例 (P1〜P4に、4ビットデータを出力する) |
![]() |
図4.コマンド4のデータ設定例 (メモリ1CHに、26ビットの周波数データを書き込む) |
![]() |
図5.コマンド8のデータ設定例 (メモリ1CHの周波数データをDDS出力とする) |
![]() |
図6.コマンドCのデータ設定例 (メモリ1CHに26ビットの周波数データを書き込み同時にDDS出力とする) |
ここでアドレスですが、DDSキットのチップセレクト用ジャンパーを接続しなければ、R7、R8、R9でプルアップされていますので、CS0=[H]、CS1=[H]、CS2=[H]にします。
(計算例) 次に、周波数の算出方法をマスターしましょう。前章のDDSの動作原理で解説したときに使った算出式(1)を見てみましょう。DDSの出力周波数Foutは、
Fout=(X/Y)×Fclk ・・・・式(1)
ここで、Xが設定値になります。
秋月のDDSキットでは、Yは26ビットのフェーズ・アキュムレータを使用していますので、226=67108864です。
Fclkは基準周波数になります。実装したX’talオシレータの周波数です。したがってFclk=67.108864MHzになります。式(1)に代入すると、
Fout = X [Hz] ・・・式(2)
となり、Xの設定値がそのまま出力周波数を表すことになります。最小ステップは、1[Hz]です。
例えばDDSの出力周波数Fout=10[MHz]を得たい場合には、10000000を2進数で表すと、00 1001 1000 1001 0110 1000 0000 となります。これを26ビットの周波数設定データとして、(MSB側) LL HLLH HLLL HLLH LHHL HLLL LLLL (LSB側)として設定し、アドレス、コマンドCと一緒に入力すれば、出力端子から10MHzの周波数が出力されるはずです。
さて、X’talオシレータの周波数が、67.108864MHzという何だか中途半端な周波数と感じた人もいると思いますが、基準オシレータに2のn乗のものを使用すれば、DDSの周波数は割り切りの良い周波数になるのです。
ところで、秋月のDDSキットには評価用の16MHzX’talオシレータが付属しています。もし、16MHzのX’talオシレータを使用した場合には、Fclk=16MHzですので、
Fout=(X/67108864)×16000000[Hz]
=0.238419・X [Hz]
となります。最小ステップが0.238419・・・[Hz]という、ちょっと中途半端な数字になってしまいます。
DDS&反転レベルシフトPLL回路
さて、いよいよ秋月のDDSキットとPLL回路を組み合わせる応用テクニックをご紹介します。DDSの長所である高分解能な周波数掃引を、1GHz帯までのPLL回路で実現します。また、回路の構成上、周波数出力はPLL回路のVCO出力となっていますので、高周波領域において波形の歪みが増大するというDDSの欠点は、ほとんどありません。また、PLL回路は反転レベルシフトにより安定性を向上させています。回路構成を図7に示します。
![]() |
図7. DDS&反転レベルシフトPLL回路図 |
ところで、PLL回路の制御法のところで、(計算例.3)が宿題となっていました。ここでもう一度、計算例3のところを思い出してください。
(計算例) fo=654.321MHzの局部発振周波数を得たい時は、どうしたらよいか?
MB1501のPLL回路”単体”では設定不可能ということでした。DDS回路と組み合わせる工夫により、それを可能にすることができるのです。
PLL回路の出力周波数foの設定は、下記の式(3)でした。
fo=[(M・N)+A]・fosc/R ------ 式(3)
ここで、MB1501の例では、
M:プリスケーラの分周値(64または128)
N:プログラマブル・カウンタ設定値(16〜2047)
A:スワロー・カウンタ設定値(0〜127,A<N,A<M)
R:リファレンスカウンタ設定値(8〜16383)
となっています。
ところでfoscですが、ここにDDS回路の周波数Foutを入力するのです。すなわち、式(2)より
fosc = Fout = X [Hz]
となり、式(3)へ代入すると
fo=[(M・N)+A]・X/R ------ 式(4)
ここでPLL側の設定として、例えばM=64,N=1000,A=0,R=640とすると、式(4)は
fo=[(64×1000)+0]・X/640 = 100・X ------ 式(5)
となります。ここで、DDS側の周波数設定で、X=6.54321MHzにすると、
fo=654.321MHzの局部発振周波数が出力できます。最小ステップ周波数は、100Hzです。
これまでPLL回路単体では、基準周波数foscのところに、周波数固定の水晶発振器(X’talモジュール)が付いていましたので、細かな周波数のステップを得ることが不可能でした。このPLLの基準周波数としてDDS回路の周波数信号を入力すれば、周波数ステップ幅を格段に細かく設定することができます。また、さらなるメリットとして、PLLの設定が固定にできるため、DDS回路側の周波数をわずかに可変することで、PLLのロックを外さないで周波数を微調整できます。ロックが外れないため、高速掃引も可能です。
![]() |
![]() |
![]() |